/*     */ package com.iris.egrantweb.struts2;
/*     */ 
/*     */ import java.io.IOException;
/*     */ import java.net.URLEncoder;
/*     */ import java.util.ArrayList;
/*     */ import java.util.Arrays;
/*     */ import java.util.Date;
/*     */ import java.util.Enumeration;
/*     */ import java.util.HashMap;
/*     */ import java.util.Iterator;
/*     */ import java.util.List;
/*     */ import java.util.Map;
/*     */ import java.util.Set;
/*     */ import javax.servlet.ServletContext;
/*     */ import javax.servlet.ServletRequest;
/*     */ import javax.servlet.http.Cookie;
/*     */ import javax.servlet.http.HttpServletRequest;
/*     */ import javax.servlet.http.HttpServletResponse;
/*     */ import javax.servlet.http.HttpSession;
/*     */ import com.iris.egrant.service.ServiceConstants;
import com.iris.egrant.service.ServiceUtils;
import com.iris.egrant.web.ServletUtils;
import net.sf.json.JSONArray;
/*     */ import net.sf.json.JSONObject;
/*     */ import org.apache.commons.lang.StringUtils;
/*     */ import org.apache.commons.lang.math.NumberUtils;
/*     */ import org.apache.commons.lang3.ObjectUtils;
/*     */ import org.apache.commons.logging.Log;
/*     */ import org.apache.commons.logging.LogFactory;
/*     */ import org.apache.struts2.RequestUtils;
/*     */ import org.apache.struts2.ServletActionContext;
/*     */ import org.codehaus.jackson.map.ObjectMapper;
/*     */ import org.springframework.web.util.WebUtils;
/*     */ 
/*     */ 
/*     */ public abstract class Struts2Utils
/*     */ {
/*  38 */   private static final Log logger = LogFactory.getLog(Struts2Utils.class);
/*     */   
/*     */   private static final String HEADER_ENCODING = "encoding";
/*     */   
/*     */   private static final String HEADER_NOCACHE = "no-cache";
/*     */   
/*     */   private static final String DEFAULT_ENCODING = "UTF-8";
/*     */   private static final boolean DEFAULT_NOCACHE = true;
/*     */   private static final long EXPIRES_SECONDS = 3600L;
/*  47 */   private static ObjectMapper mapper = new ObjectMapper();
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static HttpSession getSession() {
/*  54 */     return ServletActionContext.getRequest().getSession();
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static HttpSession getSession(boolean isNew) {
/*  61 */     return ServletActionContext.getRequest().getSession(isNew);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static Object getSessionAttribute(String name) {
/*  68 */     HttpSession session = getSession(false);
/*  69 */     return (session != null) ? session.getAttribute(name) : null;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static HttpServletRequest getRequest() {
/*  76 */     return ServletActionContext.getRequest();
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static String getParameter(String name) {
/*  83 */     return getRequest().getParameter(name);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static HttpServletResponse getResponse() {
/*  90 */     return ServletActionContext.getResponse();
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static void render(String contentType, String content, String... headers) {
/* 104 */     HttpServletResponse response = initResponseHeader(contentType, headers);
/*     */     try {
/* 106 */       response.getWriter().write(content);
/* 107 */       response.getWriter().flush();
/* 108 */     } catch (IOException e) {
/* 109 */       throw new RuntimeException(e.getMessage(), e);
/*     */     } 
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static void renderText(String text, String... headers) {
/* 119 */     render("text/plain", text, headers);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static void renderHtml(String html, String... headers) {
/* 128 */     render("text/html", html, headers);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static void renderXml(String xml, String... headers) {
/* 137 */     render("text/xml", xml, headers);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static void renderJson(String jsonString, String... headers) {
/* 148 */     render("application/json", jsonString, headers);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static void renderJson(Object data, String... headers) {
/* 159 */     HttpServletResponse response = initResponseHeader("application/json", headers);
/*     */     try {
/* 161 */       mapper.writeValue(response.getWriter(), data);
/* 162 */     } catch (IOException e) {
/* 163 */       throw new IllegalArgumentException(e);
/*     */     } 
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static void renderJsonp(String callbackName, Object object, String... headers) {
/* 176 */     String jsonString = null;
/*     */     try {
/* 178 */       jsonString = mapper.writeValueAsString(object);
/* 179 */     } catch (IOException e) {
/* 180 */       throw new IllegalArgumentException(e);
/*     */     } 
/*     */     
/* 183 */     String result = callbackName + "(" + jsonString + ");";
/*     */ 
/*     */     
/* 186 */     render("text/javascript", result, headers);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static HttpServletResponse initResponseHeader(String contentType, String... headers) {
/* 194 */     String encoding = "UTF-8";
/* 195 */     boolean noCache = true;
/* 196 */     long expiresSeconds = 3600L;
/* 197 */     for (String header : headers) {
/* 198 */       String headerName = StringUtils.substringBefore(header, ":");
/* 199 */       String headerValue = StringUtils.substringAfter(header, ":");
/*     */       
/* 201 */       if (StringUtils.equalsIgnoreCase(headerName, "encoding")) {
/* 202 */         encoding = headerValue;
/* 203 */       } else if (StringUtils.equalsIgnoreCase(headerName, "no-cache")) {
/* 204 */         noCache = Boolean.parseBoolean(headerValue);
/* 205 */       } else if (StringUtils.equalsIgnoreCase(headerName, "expiresSeconds")) {
/* 206 */         expiresSeconds = Long.parseLong(headerValue);
/*     */       } else {
/* 208 */         throw new IllegalArgumentException(headerName + "不是一个合法的header类型");
/*     */       } 
/*     */     } 
/*     */     
/* 212 */     HttpServletResponse response = ServletActionContext.getResponse();
/*     */ 
/*     */     
/* 215 */     String fullContentType = contentType + ";charset=" + encoding;
/* 216 */     response.setContentType(fullContentType);
/* 217 */     if (noCache) {
/* 218 */       ServletUtils.setDisableCacheHeader(response);
/*     */     } else {
/* 220 */       ServletUtils.setExpiresHeader(response, expiresSeconds);
/*     */     } 
/*     */     
/* 223 */     return response;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static Long decodeDesCode(String param) {
/* 230 */     return decodeDesCode(param, ServiceConstants.VALIDATE_TIME.longValue());
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static String decodeDesString(String param) {
/* 237 */     return decodeDesString(param, ServiceConstants.VALIDATE_TIME.longValue());
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static List<Long> splitDesStrToLong(String str) {
/* 340 */     if (StringUtils.isBlank(str)) {
/* 341 */       return null;
/*     */     }
/* 343 */     String[] strArray = str.split(",");
/* 344 */     if (strArray.length > 0) {
/* 345 */       List<Long> list = null;
/* 346 */       for (String desid : strArray) {
/* 347 */         Long id = null;
/* 348 */         id = decodeDesCode(desid);
/* 349 */         if (id != null) {
/* 350 */           list = (list == null) ? new ArrayList<Long>() : list;
/* 351 */           list.add(Long.valueOf(id.longValue()));
/*     */         } 
/*     */       } 
/* 354 */       return list;
/*     */     } 
/* 356 */     return null;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static List<String> splitDesStrToString(String str) {
/* 367 */     if (StringUtils.isBlank(str)) {
/* 368 */       return null;
/*     */     }
/* 370 */     String[] strArray = str.split(",");
/* 371 */     if (strArray.length > 0) {
/* 372 */       List<String> list = null;
/* 373 */       for (String strTp : strArray) {
/* 374 */         String tmp = decodeDesString(strTp);
/* 375 */         if (StringUtils.isNotBlank(tmp)) {
/* 376 */           list = (list == null) ? new ArrayList<String>() : list;
/* 377 */           list.add(tmp);
/*     */         } 
/*     */       } 
/* 380 */       return list;
/*     */     } 
/* 382 */     return null;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static List<Integer> splitDesStrToInteger(String str) {
/* 393 */     if (StringUtils.isBlank(str)) {
/* 394 */       return null;
/*     */     }
/* 396 */     String[] strArray = str.split(",");
/* 397 */     if (strArray.length > 0) {
/* 398 */       List<Integer> list = null;
/* 399 */       for (String desid : strArray) {
/* 400 */         list = (list == null) ? new ArrayList<Integer>() : list;
/* 401 */         Integer id = null;
/* 402 */         id = Integer.valueOf(decodeDesCode(desid).intValue());
/* 403 */         if (id != null) {
/* 404 */           list.add(Integer.valueOf(id.intValue()));
/*     */         }
/*     */       } 
/* 407 */       return list;
/*     */     } 
/* 409 */     return null;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static boolean checkedCode() {
/* 416 */     String c = (String)getSession().getAttribute("KAPTCHA_SESSION_KEY");
/* 417 */     String parm = getParameter("checkcode");
/*     */     
/* 419 */     if (StringUtils.isBlank(parm) || !parm.equalsIgnoreCase(c)) {
/* 420 */       return false;
/*     */     }
/* 422 */     return true;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static Long decodeDesCode(String param, long timespan) {
/* 433 */     if (StringUtils.isBlank(param) || "null".equalsIgnoreCase(param) || "undefined".equalsIgnoreCase(param)) {
/* 434 */       return null;
/*     */     }
/* 436 */     Long code = null;
/* 437 */     String codeStr = null;
/* 438 */     if (NumberUtils.isDigits(param)) {
/* 439 */       logger.error("未进行加密处理：param=" + param + "; " + ServletActionContext.getRequest().getHeader("REFERER") + ";  requesturl:" + RequestUtils.getServletPath(ServletActionContext.getRequest()) + " ;requestparam: " + WebUtils.getParametersStartingWith((ServletRequest)ServletActionContext.getRequest(), null).toString());
/*     */ 
/*     */ 
/*     */       
/* 443 */       code = null;
/*     */     } else {
/*     */       try {
/* 446 */         if (StringUtils.isNotBlank(param)) {
/* 447 */           codeStr = ServiceUtils.decodeFromDes3(URLEncoder.encode(param, "utf-8"));
/* 448 */           if (NumberUtils.isDigits(codeStr)) {
/* 449 */             logger.error("未进行添加时间戳处理：param=" + param + "; " + ServletActionContext.getRequest().getHeader("REFERER") + ";  requesturl:" + RequestUtils.getServletPath(ServletActionContext.getRequest()) + " ;requestparam: " + WebUtils.getParametersStartingWith((ServletRequest)ServletActionContext.getRequest(), null).toString());
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */             
/* 458 */             code = null;
/* 459 */           } else if (codeStr.indexOf("|") > -1) {
/* 460 */             long start = Long.valueOf(StringUtils.split(codeStr, '|')[1]).longValue();
/* 461 */             if ((new Date()).getTime() - start < timespan && NumberUtils.isDigits(StringUtils.split(codeStr, '|')[0])) {
/*     */               
/* 463 */               code = Long.valueOf(Long.parseLong(StringUtils.split(codeStr, '|')[0]));
/*     */             } else {
/* 465 */               logger.error("解密参数code错误：已经超时  ;  requesturl:" + RequestUtils.getServletPath(ServletActionContext.getRequest()));
/*     */             }
/*     */           
/*     */           } 
/*     */         } 
/* 470 */       } catch (Exception e) {
/* 471 */         logger.warn("解密参数code错误：param=" + param + "; " + e.getMessage());
/*     */       } 
/*     */     } 
/* 474 */     return code;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static String decodeDesString(String param, long timespan) {
/* 485 */     if (StringUtils.isBlank(param) || "null".equalsIgnoreCase(param) || "undefined".equalsIgnoreCase(param)) {
/* 486 */       return null;
/*     */     }
/* 488 */     String code = null;
/* 489 */     String codeStr = null;
/*     */     
/*     */     try {
/* 492 */       if (StringUtils.isNotBlank(param)) {
/* 493 */         codeStr = ServiceUtils.decodeFromDes3(URLEncoder.encode(param, "utf-8"));
/* 494 */         if (StringUtils.isNotBlank(codeStr) && !codeStr.contains("|")) {
/* 495 */           logger.error("未进行添加时间戳处理：param=" + param + "; " + ServletActionContext.getRequest().getHeader("REFERER") + ";  requesturl:" + RequestUtils.getServletPath(ServletActionContext.getRequest()) + " ;requestparam: " + WebUtils.getParametersStartingWith((ServletRequest)ServletActionContext.getRequest(), null).toString());
/*     */ 
/*     */ 
/*     */           
/* 499 */           code = codeStr;
/* 500 */         } else if (codeStr.indexOf("|") > -1) {
/* 501 */           String[] t = StringUtils.split(codeStr, '|');
/* 502 */           long start = Long.valueOf(t[t.length - 1]).longValue();
/* 503 */           if ((new Date()).getTime() - start < timespan) {
/* 504 */             code = codeStr.substring(0, codeStr.lastIndexOf("|"));
/*     */           } else {
/* 506 */             logger.error("解密参数code错误：已经超时  ;  requesturl:" + RequestUtils.getServletPath(ServletActionContext.getRequest()));
/*     */           }
/*     */         
/*     */         } 
/*     */       } 
/* 511 */     } catch (Exception e) {
/* 512 */       logger.warn("解密参数code错误：param=" + param + "; " + e.getMessage());
/*     */     } 
/* 514 */     return code;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static boolean checkedCode(boolean clearSession) {
/* 525 */     String c = (String)getSession().getAttribute("KAPTCHA_SESSION_KEY");
/* 526 */     String parm = getParameter("checkcode");
/*     */     
/* 528 */     if (clearSession && getSession().getAttribute("KAPTCHA_SESSION_KEY") != null)
/*     */     {
/* 530 */       getSession().removeAttribute("KAPTCHA_SESSION_KEY");
/*     */     }
/* 532 */     if (StringUtils.isBlank(parm) || !parm.equalsIgnoreCase(c)) {
/* 533 */       return false;
/*     */     }
/* 535 */     return true;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static ServletContext getServletContext() {
/* 546 */     return ServletActionContext.getServletContext();
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static Map<String, Object> getDataTableConditions() {
/* 557 */     Map<String, Object> conditions = new HashMap<String, Object>();
/* 558 */     String originalstr = getParameter("searchString");
/* 559 */     if (StringUtils.isBlank(originalstr)) {
/* 560 */       return conditions;
/*     */     }
/*     */     
/* 563 */     JSONArray originals = JSONArray.fromObject(originalstr);
/* 564 */     if (originals != null && originals.size() > 0) {
/* 565 */       for (int i = 0; i < originals.size(); i++) {
/* 566 */         JSONObject original = (JSONObject)originals.get(i);
/* 567 */         if (original != null && original.containsKey("elements")) {
/* 568 */           JSONArray pairs = (JSONArray)original.get("elements");
/* 569 */           if (pairs != null && pairs.size() > 0) {
/* 570 */             for (int j = 0; j < pairs.size(); j++) {
/* 571 */               JSONObject pair = (JSONObject)pairs.get(j);
/* 572 */               if (pair != null) {
/* 573 */                 String tempValue = pair.getString("value");
/* 574 */                 conditions.put(pair.getString("key"), tempValue);
/* 575 */                 if (StringUtils.isNotEmpty(tempValue)) {
/* 576 */                   conditions.put(pair.getString("key") + "List", Arrays.asList(tempValue.split(",")));
/*     */                 }
/*     */               } 
/*     */             } 
/*     */           }
/*     */         } 
/*     */       } 
/*     */     }
/*     */     
/* 585 */     if (conditions.containsKey("search_key")) {
/* 586 */       conditions.put("search_key", ObjectUtils.toString(conditions.get("search_key")).replaceAll("\\s{1,}", "%"));
/*     */     }
/* 588 */     return conditions;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public static Map<String, Object> getParameterMap() throws Exception {
/* 599 */     HttpServletRequest request = getRequest();
/* 600 */     String method = request.getMethod();
/* 601 */     Map<String, Object> resultMap = new HashMap<String, Object>();
/* 602 */     Map<String, String[]> tempMap = request.getParameterMap();
/* 603 */     Set<String> keys = tempMap.keySet();
/* 604 */     String paramValue = "";
/* 605 */     for (String key : keys) {
/* 606 */       paramValue = request.getParameter(key);
/* 607 */       if ("GET".equals(method)) {
/* 608 */         byte[] source = paramValue.getBytes("iso8859-1");
/* 609 */         paramValue = new String(source, "UTF-8");
/*     */       } 
/* 611 */       resultMap.put(key, paramValue);
/*     */     } 
/* 613 */     return resultMap;
/*     */   }
/*     */   
/*     */   public static void refreshSessionId() {
/* 617 */     HttpSession session = getSession(false);
/* 618 */     if (session == null) {
/*     */       return;
/*     */     }
/*     */     
/* 622 */     HashMap<String, Object> old = new HashMap<String, Object>();
/* 623 */     Enumeration<String> keys = session.getAttributeNames();
/* 624 */     while (keys.hasMoreElements()) {
/* 625 */       String key = keys.nextElement();
/* 626 */       old.put(key, session.getAttribute(key));
/* 627 */       session.removeAttribute(key);
/*     */     } 
/* 629 */     session.invalidate();
/*     */     
/* 631 */     HttpSession newSession = getSession(true);
/*     */ 
/*     */     
/* 634 */     for (Iterator<Map.Entry<String, Object>> it = old.entrySet().iterator(); it.hasNext(); ) {
/* 635 */       Map.Entry entry = it.next();
/* 636 */       newSession.setAttribute((String)entry.getKey(), entry.getValue());
/*     */     } 
/*     */     
/* 639 */     Cookie[] cookies = getRequest().getCookies();
/* 640 */     if (null != cookies)
/* 641 */       for (int i = 0; i < cookies.length; i++) {
/* 642 */         if ("JSESSIONID".equalsIgnoreCase(cookies[i].getName())) {
/* 643 */           cookies[i].setMaxAge(0);
/* 644 */           getResponse().addCookie(cookies[i]);
/*     */         } 
/*     */       }  
/*     */   }
/*     */ }


/* Location:              D:\文件kjt\WEB-INF\lib\egrant-core-2.2.20240205.1659.jar!\com\iris\egrant\web\struts2\Struts2Utils.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       1.1.3
 */